package javase.ch04;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
 * 需求：公司召集5名员工开会，等5名员工都到了，会议开始。
 */
public class CyclicBarrierWork {
    public static void main(String[] args) {
        //第一个参数：屏障数 第二个参数 达到屏障后执行的任务
        CyclicBarrier cyclicBarrier = new CyclicBarrier(5,()->{
            System.out.println("人齐了，我们开始开会吧。");
        });
        for (int i = 1; i <=5; i++) {

            int finalI = i;
            new Thread(()->{
                //匿名内部类 使用变量需要变成final
                System.out.println("目前"+ finalI +"号员工到了。");
                try {
                    cyclicBarrier.await();//计数器+1
                } catch (InterruptedException |BrokenBarrierException e) {
                    throw new RuntimeException(e);
                }
            },"员工"+i).start();
        }
    }
}

